/**
 * 采购统计
 * 
 * @author YY
 * @since 2011年3月17日
 */
Ext.onReady(function() {
			/**
			 * 采购单位数据
			 */
			var puchasingcompanysStore = new Ext.data.Store({
						proxy : new Ext.data.HttpProxy({
									url : 'purchasingManage.ered?reqCode=selectSimplePurchasingcompanys'
								}),
						reader : new Ext.data.JsonReader({}, [{
											name : 'pc_id'
										}, {
											name : 'pc_name'
										}]),
						baseParams : {
						}
					});
	
			/**
			 * 采购方式数据
			 */
			var purchasingmannersStore = new Ext.data.Store({
						proxy : new Ext.data.HttpProxy({
									url : 'purchasingManage.ered?reqCode=selectSimplePurchasingManners'
								}),
						reader : new Ext.data.JsonReader({}, [{
											name : 'purm_id'
										}, {
											name : 'purm_name'
										}]),
						baseParams : {
						}
					});
			
			/**
			 * 产品类别数据
			 */
			var productTypesStore = new Ext.data.Store({
						proxy : new Ext.data.HttpProxy({
									url : 'purchasingManage.ered?reqCode=selectSimpleProducts'
								}),
						reader : new Ext.data.JsonReader({}, [{
											name : 'prd_code'
										}, {
											name : 'prd_name'
										}]),
						baseParams : {
							prd_type : '产品类别'
						}
					});
			
			/**
			 * 产品数据
			 */
			var productsStore = new Ext.data.Store({
						proxy : new Ext.data.HttpProxy({
									url : 'purchasingManage.ered?reqCode=selectSimpleProducts'
								}),
						reader : new Ext.data.JsonReader({}, [{
											name : 'prd_id'
										}, {
											name : 'prd_name'
										}]),
						baseParams : {
							prd_type : '产品'
						}
					});	
			productsStore.load();//最先初始化产品数据，查出全部的
			
			/**
			 * 产品下拉菜单
			 */
			var productsComboBox = new Ext.form.ComboBox({
					hiddenName : 'prd_id',
					fieldLabel : '采购产品',
					emptyText : '请选择...',
					triggerAction : 'all',
					store : productsStore,
					displayField : 'prd_name',
					valueField : 'prd_id',
					loadingText : '正在加载数据...',
					mode : 'local', // 数据会自动读取,如果设置为local又调用了store.load()则会读取2次；也可以将其设置为local，然后通过store.load()方法来读取
					forceSelection : true,
					typeAhead : true,
					resizable : true,
					editable : false,
					anchor : '100%'
					});
					
			/**
			 * 产品类别下拉菜单
			 */
			var productTypesComboBox = new Ext.form.ComboBox({
					hiddenName : 'prd_code',
					fieldLabel : '采购产品类别',
					emptyText : '请选择...',
					triggerAction : 'all',
					store : productTypesStore,
					displayField : 'prd_name',
					valueField : 'prd_code',
					loadingText : '正在加载数据...',
					mode : 'remote', // 数据会自动读取,如果设置为local又调用了store.load()则会读取2次；也可以将其设置为local，然后通过store.load()方法来读取
					forceSelection : true,
					typeAhead : true,
					resizable : true,
					editable : false,
					anchor : '100%'
					});
					
			productTypesComboBox.on('select', function() {
						productsComboBox.reset();
						var value = productTypesComboBox.getValue();
						productsStore.load({
									params : {
										prd_parentcode : value
									}
								});
					});
	
			var qForm = new Ext.form.FormPanel({
						region : 'north',
						title : '<span style="font-weight:normal">查询条件<span>',
						collapsible : true,
						border : true,
						labelWidth : 50, // 标签宽度
						// frame : true, //是否渲染表单面板背景色
						labelAlign : 'right', // 标签对齐方式
						bodyStyle : 'padding:3 5 0', // 表单元素和表单面板的边距
						buttonAlign : 'center',
						height : 120,
						items : [{
									layout : 'column',
									border : false,
									items : [{
												columnWidth : .33,
												layout : 'form',
												labelWidth : 80, // 标签宽度
												defaultType : 'textfield',
												border : false,
												items : [
															new Ext.form.ComboBox({
																hiddenName : 'pc_id',
																fieldLabel : '采购单位',
																emptyText : '请选择...',
																triggerAction : 'all',
																store : puchasingcompanysStore,
																displayField : 'pc_name',
																valueField : 'pc_id',
																loadingText : '正在加载数据...',
																mode : 'remote', // 数据会自动读取,如果设置为local又调用了store.load()则会读取2次；也可以将其设置为local，然后通过store.load()方法来读取
																forceSelection : true,
																typeAhead : true,
																resizable : true,
																editable : false,
																anchor : '100%'
																})
														]
											}, {
												columnWidth : .33,
												layout : 'form',
												labelWidth : 80, // 标签宽度
												defaultType : 'textfield',
												border : false,
												items : [productTypesComboBox]
											}, {
												columnWidth : .33,
												layout : 'form',
												labelWidth : 80, // 标签宽度
												defaultType : 'textfield',
												border : false,
												items : [productsComboBox]
											}]
								 },{
								 	layout : 'column',
									border : false,
									items : [{
												columnWidth : .33,
												layout : 'form',
												labelWidth : 80, // 标签宽度
												defaultType : 'textfield',
												border : false,
												items : [
															new Ext.form.ComboBox({
																hiddenName : 'purm_id',
																fieldLabel : '采购方式',
																emptyText : '请选择...',
																triggerAction : 'all',
																store : purchasingmannersStore,
																displayField : 'purm_name',
																valueField : 'purm_id',
																loadingText : '正在加载数据...',
																mode : 'remote', // 数据会自动读取,如果设置为local又调用了store.load()则会读取2次；也可以将其设置为local，然后通过store.load()方法来读取
																forceSelection : true,
																typeAhead : true,
																resizable : true,
																editable : false,
																anchor : '100%'
																})
														]
											},{
												columnWidth : .33,
												layout : 'form',
												labelWidth : 80, // 标签宽度
												defaultType : 'textfield',
												border : false,
												items : [{
															fieldLabel : '采购日期',
															name : 'pur_purchasingdate_start',
															maxLength : 60,
															xtype : 'datefield',
															format : 'Y-m-d',
															anchor : '100%'
														}]
											},{
												columnWidth : .33,
												layout : 'form',
												labelWidth : 80, // 标签宽度
												defaultType : 'textfield',
												border : false,
												items : [{
															fieldLabel : '　到　',
															name : 'pur_purchasingdate_end',
															maxLength : 60,
															xtype : 'datefield',
															format : 'Y-m-d',
															anchor : '100%'
														}]
											}]
								 }],
						buttons : [{
									text : '查询',
									iconCls : 'previewIcon',
									handler : function() {
										querySfxmDatas();
									}
								}, {
									text : '重置',
									iconCls : 'tbar_synchronizeIcon',
									handler : function() {
										qForm.getForm().reset();
									}
								}]
					});

			// 定义自动当前页行号
			var rownum = new Ext.grid.RowNumberer({
						header : 'NO',
						width : 28
					});

			// 定义列模型
			var cm = new Ext.grid.ColumnModel([rownum, 
				{
				dataIndex : 'purdet_id', // 数据索引:和Store模型对应
				sortable : true,
				hidden :true					
				},{// 是否可排序	
				header : '采购单位', // 列标题
				dataIndex : 'pc_name', // 数据索引:和Store模型对应
				sortable : true,
				width:100					
				},{// 是否可排序	
				header : '采购方式', // 列标题
				dataIndex : 'purm_name', // 数据索引:和Store模型对应
				sortable : true,
				width:100					
				},{// 是否可排序	
				header : '采购产品', // 列标题
				dataIndex : 'prd_name', // 数据索引:和Store模型对应
				sortable : true,
				width:200					
				},{// 是否可排序	
				header : '采购产品类别', // 列标题
				dataIndex : 'prd_typename', // 数据索引:和Store模型对应
				sortable : true,
				width:100					
				},{// 是否可排序	
				header : '品牌', // 列标题
				dataIndex : 'brd_name', // 数据索引:和Store模型对应
				sortable : true,
				width:100					
				},{// 是否可排序	
				header : '型号', // 列标题
				dataIndex : 'prm_name', // 数据索引:和Store模型对应
				sortable : true,
				width:100					
				},{// 是否可排序	
				header : '产地类型', // 列标题
				dataIndex : 'purdet_originetype', // 数据索引:和Store模型对应
				sortable : true,
				width:100					
				},{// 是否可排序	
				header : '采购日期', // 列标题
				dataIndex : 'pur_purchasingdate', // 数据索引:和Store模型对应
				sortable : true,
				width:100					
				},{// 是否可排序
				header : '重点统计指标',
				dataIndex : 'purdet_accordingtarget',
				sortable : true,
				width:100
				},{
				header : '实际采购数量',
				dataIndex : 'purdet_factpuchasingquantity',
				sortable : true,
				width:100
				},{
				header : '预算总计',
				dataIndex : 'purdet_budgettotal',
				sortable : true,
				width:100
				},{
				header : '预算财政性资金',
				dataIndex : 'purdet_budgetfinance',
				sortable : true,
				width:100
				},{
				header : '预算其他资金',
				dataIndex : 'purdet_budgetother',
				sortable : true,
				width:100
				},{
				header : '实际总计',
				dataIndex : 'purdet_facttotal',
				sortable : true,
				width:100
				},{
				header : '实际财政性资金',
				dataIndex : 'purdet_factfinance',
				sortable : true,
				width:100
				},{
				header : '实际其他资金',
				dataIndex : 'purdet_factother',
				sortable : true,
				width:100
				},{
				header : '节约额',
				dataIndex : 'purdet_savingmoney',
				sortable : true,
				width:100
				},{
				header : '节约率(%)',
				dataIndex : 'purdet_savingrate',
				sortable : true,
				width:100
				},{
				header : '国库集中支付',
				dataIndex : 'purdet_fiscpay',
				sortable : true,
				width:100
				},{
				header : '成交金额',
				dataIndex : 'purdet_finalprice',
				sortable : true,
				width:100
			}]);

			/**
			 * 数据存储
			 */
			var store = new Ext.data.Store({
						// 获取数据的方式
						proxy : new Ext.data.HttpProxy({
									url : 'purchasingManage.ered?reqCode=selectPurchasingdetails'
								}),
						reader : new Ext.data.JsonReader({
									totalProperty : 'TOTALCOUNT', // 记录总数
									root : 'ROOT' // Json中的列表数据根节点
								}, [{
											name : 'purdet_id' // Json中的属性Key值
										}, {
											name : 'pur_id'
										}, {
											name : 'prd_id'
										}, {
											name : 'brd_id'
										}, {
											name : 'prm_id'
										}, {
											name : 'purdet_originetype'
										}, {
											name : 'purdet_accordingtarget'
										}, {
											name : 'purdet_factpuchasingquantity'
										}, {
											name : 'purdet_budgettotal'
										}, {
											name : 'purdet_budgetfinance'
										},{
											name : 'purdet_budgetother'
										}, {
											name : 'purdet_facttotal'
										}, {
											name : 'purdet_factfinance'
										}, {
											name : 'purdet_factother'
										}, {
											name : 'purdet_savingmoney'
										}, {
											name : 'purdet_savingrate'
										}, {
											name : 'purdet_fiscpay'
										}, {
											name : 'purdet_finalprice'
										}, {
											name : 'pur_contractcode'
										}, {
											name : 'pur_contractname'
										}, {
											name : 'pur_purchasingdate'
										}, {
											name : 'brd_name'
										}, {
											name : 'prm_name'
										}, {
											name : 'pc_name'
										}, {
											name : 'purm_name'
										}, {
											name : 'prd_name'
										}, {
											name : 'prd_typename'
										}])
					});

			/**
			 * 翻页排序时候的参数传递
			 */
			// 翻页排序时带上查询条件
			store.on('beforeload', function() {
						this.baseParams = qForm.getForm().getValues();
					});
			// 每页显示条数下拉选择框
			var pagesize_combo = new Ext.form.ComboBox({
						name : 'pagesize',
						triggerAction : 'all',
						mode : 'local',
						store : new Ext.data.ArrayStore({
									fields : ['value', 'text'],
									data : [[10, '10条/页'], [20, '20条/页'], [50, '50条/页'], [100, '100条/页'], [250, '250条/页'], [500, '500条/页']]
								}),
						valueField : 'value',
						displayField : 'text',
						value : '20',
						editable : false,
						width : 85
					});
			var number = parseInt(pagesize_combo.getValue());
			// 改变每页显示条数reload数据
			pagesize_combo.on("select", function(comboBox) {
						bbar.pageSize = parseInt(comboBox.getValue());
						number = parseInt(comboBox.getValue());
						store.reload({
									params : {
										start : 0,
										limit : bbar.pageSize
									}
								});
					});

			// 分页工具栏
			var bbar = new Ext.PagingToolbar({
						pageSize : number,
						store : store,
						displayInfo : true,
						displayMsg : '显示{0}条到{1}条,共{2}条',
						plugins : new Ext.ux.ProgressBarPager(), // 分页进度条
						emptyMsg : "没有符合条件的记录",
						items : ['-', '&nbsp;&nbsp;', pagesize_combo]
					});

			// 表格工具栏
			var tbar = new Ext.Toolbar({
						items : [{
									text : '导出',
									tooltip : '以仿Ajax方式导出,界面无刷新',
									iconCls : 'page_excelIcon',
									handler : function() {
										exportExcel('purchasingManage.ered?reqCode=exportExcelForPurchasingdetails');
									}
								}, '->', {
									text : '刷新',
									iconCls : 'arrow_refreshIcon',
									handler : function() {
										store.reload();
									}
								}]
					});

			// 表格实例
			var grid = new Ext.grid.GridPanel({
						// 表格面板标题,默认为粗体，我不喜欢粗体，这里设置样式将其格式为正常字体
						title : '<span style="font-weight:normal">采购明细</span>',
						height : 500,
						autoScroll : true,
						frame : true,
						region : 'center', // 和VIEWPORT布局模型对应，充当center区域布局
						store : store, // 数据存储
						stripeRows : true, // 斑马线
						cm : cm, // 列模型
						tbar : tbar, // 表格工具栏
						bbar : bbar,// 分页工具栏
						viewConfig : {
			// 不产横向生滚动条, 各列自动扩展自动压缩, 适用于列数比较少的情况
						// forceFit : true
						},
						loadMask : {
							msg : '正在加载表格数据,请稍等...'
						}
					});
	

			// 布局
			// 如果把form作为center区域的话,其Height属性将失效。
			var viewport = new Ext.Viewport({
						layout : 'border',
						items : [qForm, grid]
					});

			/**
			 * 查询项目列表
			 */
			function querySfxmDatas() {
				var params = qForm.getForm().getValues();
				params.start = 0;
				params.limit = bbar.pageSize;
				store.load({
							params : params
						});
			}


		});